package com.zhentao.utils;

import org.springframework.web.multipart.MultipartFile;

/**
 * OCR参数验证工具类
 * 提供文件上传和参数验证功能
 * 
 * @author zhentao
 * @version 1.0
 * @since 2025-08-27
 */
public class OcrValidationUtil {
    
    // 支持的文件类型
    private static final String[] ALLOWED_FILE_TYPES = {"image/jpeg", "image/jpg", "image/png", "image/bmp"};
    
    // 最大文件大小（5MB）
    private static final long MAX_FILE_SIZE = 5 * 1024 * 1024;
    
    /**
     * 验证文件上传请求
     * 
     * @param file 上传的文件
     * @param side 身份证面
     * @return 验证错误信息，无错误返回null
     */
    public static String validateRequest(MultipartFile file, String side) {
        // 文件基础检查
        if (file == null || file.isEmpty()) {
            return "请选择要识别的身份证照片文件";
        }
        
        if (file.getSize() > MAX_FILE_SIZE) {
            return "文件大小不能超过5MB";
        }
        
        // 文件类型检查
        String contentType = file.getContentType();
        if (contentType == null || !isValidFileType(contentType.toLowerCase())) {
            return "不支持的文件类型，请上传JPG、PNG或BMP格式的图片";
        }
        
        // 参数检查
        if (!"face".equals(side) && !"back".equals(side)) {
            return "身份证面参数错误，请指定face（正面）或back（反面）";
        }
        
        return null;
    }
    
    /**
     * 检查文件类型是否支持
     */
    private static boolean isValidFileType(String contentType) {
        for (String allowedType : ALLOWED_FILE_TYPES) {
            if (allowedType.equals(contentType)) {
                return true;
            }
        }
        return false;
    }
}